【快速上手】Maven的使用
首先需要了解一下为什么要使用Maven
- 一个项目就是一个工程
如果一个项目非常庞大,就不适合继续使用Package来划分模块。最好是每一个模块对应一个工程,利于分工协作。而利用Maven就可以将一个项目拆分为多个工程。 - 项目中需要jar包必须手动“复制”、“粘贴”到WEB-INF/lib目录下
带来的问题:同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿。借助Maven,可以将jar包仅仅保存在“仓库”中,有需要使用的工程“引用”这个文件接口,并不需要真的把jar包复制过来。 - jar包需要别人替我们准备好,或者到官网下载
不同技术的官网提供的jar包下载方式是不同的,有些jar包我们进不去别人的官网,只能从第三方网站下载,而第三方的网站的jar包可能是不规范的。而借助于Maven我们可以以一种规范的方式下载jar包。因为所有知名的jar包都会以规范的方式下载jar包,内容可靠。 - 一个jar包依赖的其它jar包需要自己手动加入工程中
有些jar包会依赖很多个jar包,而被依赖的jar包也可能依赖其它jar包,这些依赖关系我们必须记下来,这样就会使程序员整加学习成本。不然我们把不完整的jar包导入到工程中,将会出现报错。而使用Maven将会自动把依赖的jar包导入进来。我们来了解一下什么是Maven
Maven是一款服务于java平台的自动化构建工具。构建就是以java源文件、框架配置文件、JSP、HTML、图片等资源为原材料,去生产一个可运行的项目的过程。这个过程主要分为编译、部署、搭建。
构建的各个环节:
[1]清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
[2]编译:将Java源程序编译为字节码文件。
[3]测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
[4]报告:将每一次测试后以标准的格式记录和展示测试结果。
[5]打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对象war包。
[6]安装:在Maven环境下特指将打包的结果——Jar包或War包安装到本地仓库中。
[7]部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。如何使用和创建一个Maven工程
- 安装jdk、配置java环境变量
- 下载并解压Maven核心程序压缩包 【点击下载http://maven.apache.org/download.cgi】
- 配置Maven环境变量
MAVEN_HOME:解压Maven核心程序的路径\apache-maven-3.6.1-bin
path:%MAVEN_HOME%\bin - 验证Maven是否配置成功(在控制台输入mvn -v)
- 创建Maven工程
在创建之前必须要知道Maven所约定的Maven目录结构,我们创建这个工程必须按照这个约定的结构去创建,因为我们写的代码最终是要交给Maven去处理的,比如说java源代码编译,只有按照这个Maven约定好的目录去创建,Maven才知道去哪找java源代码编译。
Maven的目录结构:
HelloMaven:根目录(工程名)
src:源码
pom.xml:Maven工程的核心配置文件
main:存放主程序
test:存放测试程序
java:存放java源文件
resources:存放框架或者其它工具的配置文件 - 编写Maven项目
[1]编写pom.xml文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.xiezhenyu.maven</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>HelloMaven</artifactId>
<!-- 版本号 -->
<version>1.0</version>
<!-- 依赖的jar包 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
[2]编写主程序代码
在src/main/java/com/xiezhenyu/maven(一般以公司域名倒写的方式命名)目录下新建文件HelloMaven.java,其内容如下
1 | package com.xiezhenyu.maven; |
[3]编写测试代码
在src/test/java/com/xiezhenyu/maven(一般以公司域名倒写的方式命名)目录下新建文件HelloMavenTest.java,其内容如下
1 | package com.xiezhenyu.maven; |
以上一个简单的Maven项目就搭建起来了。
如何测试运行一个Maven项目
在测试之前先要了解一下Maven的常用命令
注意:执行与构建过程有关的Maven命令的时候,必须进入pom.xml所在的目录
常用命令
[1]mvn clean : 清理
[2]mvn compile : 编译主程序
[3]mvn test-compile : 编译测试程序
[4]mvn test : 执行测试
[5]mvn package : 打包
[6]mvn install : 安装
[7]mvn site :生成站点在编译之前,我们如果是第一次使用maven我们本地仓库中没有项目所需的jar包,我们需要联网
[1]Maven 的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须有特定的插件来完成。而插件本身不包含在Maven核心程序中。
[2]当我们执行的Maven命令需要用到某些插件时,Maven核心程序会首先到本地仓库中查找。
[3]本地仓库的默认位置:[系统登陆用户的家目录] \ .m2\repository
[4]Maven核心程序如果在本地仓库中找不到需要的插件,那么它会自动连接外网,到中央仓库下载。
[5]如果此时无法连接外网,则构建失败。
[6]修改默认本地仓库的位置可以让Maven核心程序到我们事先准备好的目录下查找插件
①找到Maven解压目录\conf\settings.xml
②在setting.xml 文件中找到 localRepository 标签
③将 < localRepository>/path/to/local/repo< /localRepository>从注释中取出
④将标签体内容修改为自定义的Maven仓库目录执行mvn compile命令(cmd必须进入pom.xml所在的目录)
可以发现我们在目录中生成了target目录,里面有classes,里面生成的是主程序编译后的结果(其中生成的maven-status目录是maven的状态,保存一些创建和输出的信息等)执行mvn test-compile命令
可以发现target目录新加了test-class目录,里面,里面生成的是测试程序编译后的结果执行mvn test命令
可以发现target目录新加了surefire-reports目录,里面生成的是测试报告相关的文件,控制台输出如下
可以发现,我们的测试运行已经成功了。执行mvn package命令
可以发现,在target目录新生成了一个目录和一个jar包,maven-archiver目录存放的是这个jar包的基本信息,jar包是主程序编译结果打成的一个jar包,将jar包解压,我们可以看一下jar包的内容
我们可以发现打包出来的并没有测试程序的内容,只有主程序的内容,里面也并没有这个工程所依赖的jar包,这样我们的工程就不会显得臃肿,如果我们将我们开发的这个模块导入到其它工程中就会方便很多。
我们再看一下执行mvn package命令控制台的输出
可以发现我们在执行打包命令时它也执行了测试,这就涉及到Maven的生命周期了。(与本篇无关,详情查看下一篇Maven)
以上就是如何快速使用Maven的方法
原文作者: 谢振瑜
原文链接: https://Xiezhenyu98.github.io/2019/10/27/[快速上手]Maven的使用/
版权声明: 转载请注明出处(必须保留作者署名及链接)